package com.jumi.microservice.material.mapper;

import com.jumi.microservice.material.domain.JmWarehouseSeq;

import java.util.List;
import java.util.Map;

/**
 * @author ssk
 * @create 2020/7/22 11:43
 **/
public interface JmWarehouseSeqMapper {

    /**
     * 保存方法
     *
     * @param jmWarehouseSeq
     * @return
     */
    int save(JmWarehouseSeq jmWarehouseSeq);

    /**
     * 保存关联地区
     * @param jmWarehouseSeq
     * @return
     */
    int saveLinkArea(JmWarehouseSeq jmWarehouseSeq);

    /**
     * 保存关联仓库
     * @param jmWarehouseSeq
     * @return
     */
    int saveLinkWarehouse(JmWarehouseSeq jmWarehouseSeq);

    /**
     * 获取所有已排序的地区ID
     * @return
     */
    List<Long> findUsedArea();

    /**
     * 更新方法
     *
     * @param jmWarehouseSeq
     * @return
     */
    int update(JmWarehouseSeq jmWarehouseSeq);

    /**
     * 根据seqId软删区域关联
     * @param seqId
     * @return
     */
    int delSeqAreaBySeqId(Long seqId);


    /**
     * 根据seqId软删仓库关联
     * @param seqId
     * @return
     */
    int delSeqWarehouseBySeqId(Long seqId);

    /**
     * 根据seqId软删仓库发货顺序
     * @param seqId
     * @return
     */
    int delSeqBySeqId(Long seqId);

    /**
     * 根据id查询实体类
     *
     * @param seqId
     * @return
     */
    JmWarehouseSeq findById(Long seqId);
    JmWarehouseSeq findById2(Long seqId);

    List<Map> findByIdInsert(Long[] areaIds);
    /**
     * 根据条件查询实体类集合
     *
     * @param jmWarehouseSeq
     * @return
     */
    List<JmWarehouseSeq> findAll(JmWarehouseSeq jmWarehouseSeq);
    List<JmWarehouseSeq> findAll2(JmWarehouseSeq jmWarehouseSeq);



    /**
     * 根据areaIds查询关联区域
     * @param areaIds
     * @return
     */
    List<Map> findAreaByAreaIds(Long[] areaIds);

    /**
     * 根据seqId查询关联区域id
     * @param seqId
     * @return areaIds
     */
    Long[] findAreaIds(Long seqId);


    /**
     * 根据区域ID获取发货顺序ID
     * @param areaIds
     * @return
     */
    List<Long> findSeqIdsByAreaIds(Long[] areaIds);

    /**
     * 根据areaName查询区域ID
     * @param areaName
     * @return
     */
    Long[] findAreaIdsByName(String areaName);

    /**
     * 根据seqId查询关联仓库
     * @param seqId
     * @return
     */
    List<Map> findWarehouseBySeqId(Long seqId);

    /**
     * 根据仓库名称查询seqId集合
     * @param warehouseName
     * @return
     */
    List<Long> findSeqIdsByWarehouse(String warehouseName);


    /**
     * 根据区域Id查询发货仓库顺序
     * @param areaId
     * @return
     */
    List<Map<String,Object>> findByAreaId(Long areaId);


    List<Long> findSeqIdsByArea(String areaName);


}
